minSystem/commit/11e3a9652a62b867d722e5aebdba895bb86f9ed3 ">11e3a9652a first 7 years ago babel-plugin-transform-vue-jsx 11e3a9652a first 7 years ago babel-preset-env 11e3a9652a first 7 years ago babel-preset-jest 11e3a9652a first 7 years ago babel-preset-stage-2 11e3a9652a first 7 years ago babel-preset-stage-3 11e3a9652a first 7 years ago babel-preset-vue 11e3a9652a first 7 years ago babel-preset-vue-app 11e3a9652a first 7 years ago babel-register 11e3a9652a first 7 years ago babel-runtime 11e3a9652a first 7 years ago babel-template 11e3a9652a first 7 years ago babel-traverse 11e3a9652a first 7 years ago babel-types 11e3a9652a first 7 years ago babylon 11e3a9652a first 7 years ago balanced-match 11e3a9652a first 7 years ago base 11e3a9652a first 7 years ago base64-js 11e3a9652a first 7 years ago batch 11e3a9652a first 7 years ago bcrypt-pbkdf 11e3a9652a first 7 years ago bfj-node4 11e3a9652a first 7 years ago big.js 11e3a9652a first 7 years ago binary-extensions 11e3a9652a first 7 years ago block-stream 11e3a9652a first 7 years ago bluebird 11e3a9652a first 7 years ago bn.js 11e3a9652a first 7 years ago body-parser 11e3a9652a first 7 years ago bonjour 11e3a9652a first 7 years ago boolbase 11e3a9652a first 7 years ago boom 11e3a9652a first 7 years ago brace-expansion 11e3a9652a first 7 years ago braces 11e3a9652a first 7 years ago brorand 11e3a9652a first 7 years ago browser-process-hrtime 11e3a9652a first 7 years ago browser-resolve 11e3a9652a first 7 years ago browser-stdout 11e3a9652a first 7 years ago browserify-aes 11e3a9652a first 7 years ago browserify-cipher 11e3a9652a first 7 years ago browserify-des 11e3a9652a first 7 years ago browserify-rsa 11e3a9652a first 7 years ago browserify-sign 11e3a9652a first 7 years ago browserify-zlib 11e3a9652a first 7 years ago browserslist 11e3a9652a first 7 years ago bser 11e3a9652a first 7 years ago buffer 11e3a9652a first 7 years ago buffer-indexof 11e3a9652a first 7 years ago buffer-xor 11e3a9652a first 7 years ago builtin-modules 11e3a9652a first 7 years ago builtin-status-codes 11e3a9652a first 7 years ago bytes 11e3a9652a first 7 years ago cacache 11e3a9652a first 7 years ago cache-base 11e3a9652a first 7 years ago caller-path 11e3a9652a first 7 years ago callsites 11e3a9652a first 7 years ago camel-case 11e3a9652a first 7 years ago camelcase 11e3a9652a first 7 years ago camelcase-keys 11e3a9652a first 7 years ago caniuse-api 11e3a9652a first 7 years ago caniuse-db 11e3a9652a first 7 years ago caniuse-lite 11e3a9652a first 7 years ago caseless 11e3a9652a first 7 years ago center-align 11e3a9652a first 7 years ago chai-nightwatch 11e3a9652a first 7 years ago chalk 11e3a9652a first 7 years ago chardet 11e3a9652a first 7 years ago check-types 11e3a9652a first 7 years ago chokidar 11e3a9652a first 7 years ago chownr 11e3a9652a first 7 years ago chromedriver 11e3a9652a first 7 years ago ci-info 11e3a9652a first 7 years ago cipher-base 11e3a9652a first 7 years ago circular-json 11e3a9652a first 7 years ago clap 11e3a9652a first 7 years ago class-utils 11e3a9652a first 7 years ago clean-css 11e3a9652a first 7 years ago cli-cursor 11e3a9652a first 7 years ago cli-spinners 11e3a9652a first 7 years ago cli-width 11e3a9652a first 7 years ago cliui 11e3a9652a first 7 years ago clone 11e3a9652a first 7 years ago clone-deep 11e3a9652a first 7 years ago co 11e3a9652a first 7 years ago coa 11e3a9652a first 7 years ago coalescy 11e3a9652a first 7 years ago code-point-at 11e3a9652a first 7 years ago collection-visit 11e3a9652a first 7 years ago color 11e3a9652a first 7 years ago color-convert 11e3a9652a first 7 years ago color-name 11e3a9652a first 7 years ago color-string 11e3a9652a first 7 years ago colormin 11e3a9652a first 7 years ago colors 11e3a9652a first 7 years ago combined-stream 11e3a9652a first 7 years ago commander 11e3a9652a first 7 years ago commondir 11e3a9652a first 7 years ago compare-versions 11e3a9652a first 7 years ago component-emitter 11e3a9652a first 7 years ago compressible 11e3a9652a first 7 years ago compression 11e3a9652a first 7 years ago concat-map 11e3a9652a first 7 years ago concat-stream 11e3a9652a first 7 years ago condense-newlines 11e3a9652a first 7 years ago config-chain 11e3a9652a first 7 years ago connect-history-api-fallback 11e3a9652a first 7 years ago console-browserify 11e3a9652a first 7 years ago console-control-strings 11e3a9652a first 7 years ago consolidate 11e3a9652a first 7 years ago constants-browserify 11e3a9652a first 7 years ago contains-path 11e3a9652a first 7 years ago content-disposition 11e3a9652a first 7 years ago content-type 11e3a9652a first 7 years ago convert-source-map 11e3a9652a first 7 years ago cookie 11e3a9652a first 7 years ago cookie-signature 11e3a9652a first 7 years ago copy-concurrently 11e3a9652a first 7 years ago copy-descriptor 11e3a9652a first 7 years ago copy-webpack-plugin 11e3a9652a first 7 years ago core-js 11e3a9652a first 7 years ago core-util-is 11e3a9652a first 7 years ago cosmiconfig 11e3a9652a first 7 years ago create-ecdh 11e3a9652a first 7 years ago create-hash 11e3a9652a first 7 years ago create-hmac 11e3a9652a first 7 years ago cross-spawn 11e3a9652a first 7 years ago cryptiles 11e3a9652a first 7 years ago crypto-browserify 11e3a9652a first 7 years ago css-color-names 11e3a9652a first 7 years ago css-loader 11e3a9652a first 7 years ago css-select 11e3a9652a first 7 years ago css-selector-tokenizer 11e3a9652a first 7 years ago css-what 11e3a9652a first 7 years ago cssesc 11e3a9652a first 7 years ago cssnano 11e3a9652a first 7 years ago csso 11e3a9652a first 7 years ago cssom 11e3a9652a first 7 years ago cssstyle 11e3a9652a first 7 years ago cuint 11e3a9652a first 7 years ago currently-unhandled 11e3a9652a first 7 years ago cyclist 11e3a9652a first 7 years ago d 11e3a9652a first 7 years ago dashdash 11e3a9652a first 7 years ago data-uri-to-buffer 11e3a9652a first 7 years ago data-urls 11e3a9652a first 7 years ago date-now 11e3a9652a first 7 years ago de-indent 11e3a9652a first 7 years ago debug 11e3a9652a first 7 years ago decamelize 11e3a9652a first 7 years ago decode-uri-component 11e3a9652a first 7 years ago deep-eql 11e3a9652a first 7 years ago deep-equal 11e3a9652a first 7 years ago deep-is 11e3a9652a first 7 years ago deepmerge 11e3a9652a first 7 years ago default-require-extensions 11e3a9652a first 7 years ago define-properties 11e3a9652a first 7 years ago define-property 11e3a9652a first 7 years ago defined 11e3a9652a first 7 years ago degenerator 11e3a9652a first 7 years ago del 11e3a9652a first 7 years ago delayed-stream 11e3a9652a first 7 years ago delegates 11e3a9652a first 7 years ago depd 11e3a9652a first 7 years ago des.js 11e3a9652a first 7 years ago destroy 11e3a9652a first 7 years ago detect-indent 11e3a9652a first 7 years ago detect-newline 11e3a9652a first 7 years ago detect-node 11e3a9652a first 7 years ago diff 11e3a9652a first 7 years ago diffie-hellman 11e3a9652a first 7 years ago dir-glob 11e3a9652a first 7 years ago dns-equal 11e3a9652a first 7 years ago dns-packet 11e3a9652a first 7 years ago dns-txt 11e3a9652a first 7 years ago doctrine 11e3a9652a first 7 years ago dom-converter 11e3a9652a first 7 years ago dom-serializer 11e3a9652a first 7 years ago domain-browser 11e3a9652a first 7 years ago domelementtype 11e3a9652a first 7 years ago domexception 11e3a9652a first 7 years ago domhandler 11e3a9652a first 7 years ago domutils 11e3a9652a first 7 years ago duplexer 11e3a9652a first 7 years ago duplexify 11e3a9652a first 7 years ago ecc-jsbn 11e3a9652a first 7 years ago echarts 11e3a9652a first 7 years ago editorconfig 11e3a9652a first 7 years ago ee-first 11e3a9652a first 7 years ago ejs 11e3a9652a first 7 years ago electron-to-chromium 11e3a9652a first 7 years ago element-ui 11e3a9652a first 7 years ago elliptic 11e3a9652a first 7 years ago emojis-list 11e3a9652a first 7 years ago encodeurl 11e3a9652a first 7 years ago end-of-stream 11e3a9652a first 7 years ago enhanced-resolve 11e3a9652a first 7 years ago entities 11e3a9652a first 7 years ago errno 11e3a9652a first 7 years ago error-ex 11e3a9652a first 7 years ago error-stack-parser 11e3a9652a first 7 years ago es-abstract 11e3a9652a first 7 years ago es-to-primitive 11e3a9652a first 7 years ago es5-ext 11e3a9652a first 7 years ago es6-iterator 11e3a9652a first 7 years ago es6-map 11e3a9652a first 7 years ago es6-set 11e3a9652a first 7 years ago es6-symbol 11e3a9652a first 7 years ago es6-weak-map 11e3a9652a first 7 years ago escape-html 11e3a9652a first 7 years ago escape-string-regexp 11e3a9652a first 7 years ago escodegen 11e3a9652a first 7 years ago escope 11e3a9652a first 7 years ago eslint 11e3a9652a first 7 years ago eslint-config-standard 11e3a9652a first 7 years ago eslint-friendly-formatter 11e3a9652a first 7 years ago eslint-import-resolver-node 11e3a9652a first 7 years ago eslint-loader 11e3a9652a first 7 years ago eslint-module-utils 11e3a9652a first 7 years ago eslint-plugin-import 11e3a9652a first 7 years ago eslint-plugin-node 11e3a9652a first 7 years ago eslint-plugin-promise 11e3a9652a first 7 years ago eslint-plugin-standard 11e3a9652a first 7 years ago eslint-plugin-vue 11e3a9652a first 7 years ago eslint-scope 11e3a9652a first 7 years ago eslint-visitor-keys 11e3a9652a first 7 years ago espree 11e3a9652a first 7 years ago esprima 11e3a9652a first 7 years ago esquery 11e3a9652a first 7 years ago esrecurse 11e3a9652a first 7 years ago estraverse 11e3a9652a first 7 years ago esutils 11e3a9652a first 7 years ago etag 11e3a9652a first 7 years ago event-emitter 11e3a9652a first 7 years ago eventemitter3 11e3a9652a first 7 years ago events 11e3a9652a first 7 years ago eventsource 11e3a9652a first 7 years ago evp_bytestokey 11e3a9652a first 7 years ago exec-sh 11e3a9652a first 7 years ago execa 11e3a9652a first 7 years ago exit 11e3a9652a first 7 years ago expand-brackets 11e3a9652a first 7 years ago expand-range 11e3a9652a first 7 years ago expect 11e3a9652a first 7 years ago express 11e3a9652a first 7 years ago extend 11e3a9652a first 7 years ago extend-shallow 11e3a9652a first 7 years ago external-editor 11e3a9652a first 7 years ago extglob 11e3a9652a first 7 years ago extract-text-webpack-plugin 11e3a9652a first 7 years ago extract-zip 11e3a9652a first 7 years ago extsprintf 11e3a9652a first 7 years ago fast-deep-equal 11e3a9652a first 7 years ago fast-json-stable-stringify 11e3a9652a first 7 years ago fast-levenshtein 11e3a9652a first 7 years ago fastparse 11e3a9652a first 7 years ago faye-websocket 11e3a9652a first 7 years ago fb-watchman 11e3a9652a first 7 years ago fd-slicer 11e3a9652a first 7 years ago figures 11e3a9652a first 7 years ago file-entry-cache 11e3a9652a first 7 years ago file-loader 11e3a9652a first 7 years ago file-uri-to-path 11e3a9652a first 7 years ago filename-regex 11e3a9652a first 7 years ago fileset 11e3a9652a first 7 years ago filesize 11e3a9652a first 7 years ago fill-range 11e3a9652a first 7 years ago finalhandler 11e3a9652a first 7 years ago find-babel-config 11e3a9652a first 7 years ago find-cache-dir 11e3a9652a first 7 years ago find-up 11e3a9652a first 7 years ago flat-cache 11e3a9652a first 7 years ago flatten 11e3a9652a first 7 years ago flush-write-stream 11e3a9652a first 7 years ago follow-redirects 11e3a9652a first 7 years ago for-in 11e3a9652a first 7 years ago for-own 11e3a9652a first 7 years ago foreach 11e3a9652a first 7 years ago forever-agent 11e3a9652a first 7 years ago form-data 11e3a9652a first 7 years ago forwarded 11e3a9652a first 7 years ago fragment-cache 11e3a9652a first 7 years ago fresh 11e3a9652a first 7 years ago friendly-errors-webpack-plugin 11e3a9652a first 7 years ago from2 11e3a9652a first 7 years ago fs-write-stream-atomic 11e3a9652a first 7 years ago fs.realpath 11e3a9652a first 7 years ago fsevents 11e3a9652a first 7 years ago fstream 11e3a9652a first 7 years ago ftp 11e3a9652a first 7 years ago function-bind 11e3a9652a first 7 years ago functional-red-black-tree 11e3a9652a first 7 years ago gauge 11e3a9652a first 7 years ago gaze 11e3a9652a first 7 years ago generate-function 11e3a9652a first 7 years ago generate-object-property 11e3a9652a first 7 years ago get-caller-file 11e3a9652a first 7 years ago get-stdin 11e3a9652a first 7 years ago get-stream 11e3a9652a first 7 years ago get-uri 11e3a9652a first 7 years ago get-value 11e3a9652a first 7 years ago getpass 11e3a9652a first 7 years ago glob 11e3a9652a first 7 years ago glob-base 11e3a9652a first 7 years ago glob-parent 11e3a9652a first 7 years ago globals 11e3a9652a first 7 years ago globby 11e3a9652a first 7 years ago globule 11e3a9652a first 7 years ago graceful-fs 11e3a9652a first 7 years ago graceful-readlink 11e3a9652a first 7 years ago growl 11e3a9652a first 7 years ago growly 11e3a9652a first 7 years ago gzip-size 11e3a9652a first 7 years ago handle-thing 11e3a9652a first 7 years ago handlebars 11e3a9652a first 7 years ago har-schema 11e3a9652a first 7 years ago har-validator 11e3a9652a first 7 years ago has 11e3a9652a first 7 years ago has-ansi 11e3a9652a first 7 years ago has-flag 11e3a9652a first 7 years ago has-unicode 11e3a9652a first 7 years ago has-value 11e3a9652a first 7 years ago has-values 11e3a9652a first 7 years ago hash-base 11e3a9652a first 7 years ago hash-sum 11e3a9652a first 7 years ago hash.js 11e3a9652a first 7 years ago hawk 11e3a9652a first 7 years ago he 11e3a9652a first 7 years ago hmac-drbg 11e3a9652a first 7 years ago hoek 11e3a9652a first 7 years ago home-or-tmp 11e3a9652a first 7 years ago hosted-git-info 11e3a9652a first 7 years ago hpack.js 11e3a9652a first 7 years ago html-comment-regex 11e3a9652a first 7 years ago html-encoding-sniffer 11e3a9652a first 7 years ago html-entities 11e3a9652a first 7 years ago html-minifier 11e3a9652a first 7 years ago html-tags 11e3a9652a first 7 years ago html-webpack-plugin 11e3a9652a first 7 years ago htmlparser2 11e3a9652a first 7 years ago http-deceiver 11e3a9652a first 7 years ago http-errors 11e3a9652a first 7 years ago http-parser-js 11e3a9652a first 7 years ago http-proxy 11e3a9652a first 7 years ago http-proxy-agent 11e3a9652a first 7 years ago http-proxy-middleware 11e3a9652a first 7 years ago http-signature 11e3a9652a first 7 years ago https-browserify 11e3a9652a first 7 years ago https-proxy-agent 11e3a9652a first 7 years ago iconv-lite 11e3a9652a first 7 years ago icss-replace-symbols 11e3a9652a first 7 years ago icss-utils 11e3a9652a first 7 years ago ieee754 11e3a9652a first 7 years ago iferr 11e3a9652a first 7 years ago ignore 11e3a9652a first 7 years ago import-local 11e3a9652a first 7 years ago imurmurhash 11e3a9652a first 7 years ago in-publish 11e3a9652a first 7 years ago indent-string 11e3a9652a first 7 years ago indexes-of 11e3a9652a first 7 years ago indexof 11e3a9652a first 7 years ago inflight 11e3a9652a first 7 years ago inherits 11e3a9652a first 7 years ago ini 11e3a9652a first 7 years ago inquirer 11e3a9652a first 7 years ago internal-ip 11e3a9652a first 7 years ago interpret 11e3a9652a first 7 years ago invariant 11e3a9652a first 7 years ago invert-kv 11e3a9652a first 7 years ago ip 11e3a9652a first 7 years ago ipaddr.js 11e3a9652a first 7 years ago is-absolute-url 11e3a9652a first 7 years ago is-accessor-descriptor 11e3a9652a first 7 years ago is-arrayish 11e3a9652a first 7 years ago is-binary-path 11e3a9652a first 7 years ago is-buffer 11e3a9652a first 7 years ago is-builtin-module 11e3a9652a first 7 years ago is-callable 11e3a9652a first 7 years ago is-ci 11e3a9652a first 7 years ago is-data-descriptor 11e3a9652a first 7 years ago is-date-object 11e3a9652a first 7 years ago is-descriptor 11e3a9652a first 7 years ago is-directory 11e3a9652a first 7 years ago is-dotfile 11e3a9652a first 7 years ago is-equal-shallow 11e3a9652a first 7 years ago is-extendable 11e3a9652a first 7 years ago is-extglob 11e3a9652a first 7 years ago is-finite 11e3a9652a first 7 years ago is-fullwidth-code-point 11e3a9652a first 7 years ago is-generator-fn 11e3a9652a first 7 years ago is-glob 11e3a9652a first 7 years ago is-my-ip-valid 11e3a9652a first 7 years ago is-my-json-valid 11e3a9652a first 7 years ago is-number 11e3a9652a first 7 years ago is-odd 11e3a9652a first 7 years ago is-path-cwd 11e3a9652a first 7 years ago is-path-in-cwd 11e3a9652a first 7 years ago is-path-inside 11e3a9652a first 7 years ago is-plain-obj 11e3a9652a first 7 years ago is-plain-object 11e3a9652a first 7 years ago is-posix-bracket 11e3a9652a first 7 years ago is-primitive 11e3a9652a first 7 years ago is-promise 11e3a9652a first 7 years ago is-property 11e3a9652a first 7 years ago is-regex 11e3a9652a first 7 years ago is-resolvable 11e3a9652a first 7 years ago is-stream 11e3a9652a first 7 years ago is-svg 11e3a9652a first 7 years ago is-symbol 11e3a9652a first 7 years ago is-typedarray 11e3a9652a first 7 years ago is-utf8 11e3a9652a first 7 years ago is-whitespace 11e3a9652a first 7 years ago is-windows 11e3a9652a first 7 years ago is-wsl 11e3a9652a first 7 years ago isarray 11e3a9652a first 7 years ago isexe 11e3a9652a first 7 years ago isobject 11e3a9652a first 7 years ago isstream 11e3a9652a first 7 years ago istanbul-api 11e3a9652a first 7 years ago istanbul-lib-coverage 11e3a9652a first 7 years ago istanbul-lib-hook 11e3a9652a first 7 years ago istanbul-lib-instrument 11e3a9652a first 7 years ago istanbul-lib-report 11e3a9652a first 7 years ago istanbul-lib-source-maps 11e3a9652a first 7 years ago istanbul-reports 11e3a9652a first 7 years ago jest 11e3a9652a first 7 years ago jest-changed-files 11e3a9652a first 7 years ago jest-config 11e3a9652a first 7 years ago jest-diff 11e3a9652a first 7 years ago jest-docblock 11e3a9652a first 7 years ago jest-environment-jsdom 11e3a9652a first 7 years ago jest-environment-node 11e3a9652a first 7 years ago jest-get-type 11e3a9652a first 7 years ago jest-haste-map 11e3a9652a first 7 years ago jest-jasmine2 11e3a9652a first 7 years ago jest-leak-detector 11e3a9652a first 7 years ago jest-matcher-utils 11e3a9652a first 7 years ago jest-message-util 11e3a9652a first 7 years ago jest-mock 11e3a9652a first 7 years ago jest-regex-util 11e3a9652a first 7 years ago jest-resolve 11e3a9652a first 7 years ago jest-resolve-dependencies 11e3a9652a first 7 years ago jest-runner 11e3a9652a first 7 years ago jest-runtime 11e3a9652a first 7 years ago jest-serializer 11e3a9652a first 7 years ago jest-serializer-vue 11e3a9652a first 7 years ago jest-snapshot 11e3a9652a first 7 years ago jest-util 11e3a9652a first 7 years ago jest-validate 11e3a9652a first 7 years ago jest-worker 11e3a9652a first 7 years ago js-base64 11e3a9652a first 7 years ago js-beautify 11e3a9652a first 7 years ago js-tokens 11e3a9652a first 7 years ago js-yaml 11e3a9652a first 7 years ago jsbn 11e3a9652a first 7 years ago jsdom 11e3a9652a first 7 years ago jsesc 11e3a9652a first 7 years ago json-loader 11e3a9652a first 7 years ago json-schema 11e3a9652a first 7 years ago json-schema-traverse 11e3a9652a first 7 years ago json-stable-stringify 11e3a9652a first 7 years ago json-stable-stringify-without-jsonify 11e3a9652a first 7 years ago json-stringify-safe 11e3a9652a first 7 years ago json3 11e3a9652a first 7 years ago json5 11e3a9652a first 7 years ago jsonify 11e3a9652a first 7 years ago jsonpointer 11e3a9652a first 7 years ago jsprim 11e3a9652a first 7 years ago kew 11e3a9652a first 7 years ago killable 11e3a9652a first 7 years ago kind-of 11e3a9652a first 7 years ago last-call-webpack-plugin 11e3a9652a first 7 years ago lazy-cache 11e3a9652a first 7 years ago lcid 11e3a9652a first 7 years ago left-pad 11e3a9652a first 7 years ago leven 11e3a9652a first 7 years ago levn 11e3a9652a first 7 years ago load-json-file 11e3a9652a first 7 years ago loader-fs-cache 11e3a9652a first 7 years ago loader-runner 11e3a9652a first 7 years ago loader-utils 11e3a9652a first 7 years ago locate-path 11e3a9652a first 7 years ago lodash 11e3a9652a first 7 years ago lodash._arraycopy 11e3a9652a first 7 years ago lodash._arrayeach 11e3a9652a first 7 years ago lodash._baseassign 11e3a9652a first 7 years ago lodash._baseclone 11e3a9652a first 7 years ago lodash._basecopy 11e3a9652a first 7 years ago lodash._basecreate 11e3a9652a first 7 years ago lodash._basefor 11e3a9652a first 7 years ago lodash._bindcallback 11e3a9652a first 7 years ago lodash._getnative 11e3a9652a first 7 years ago lodash._isiterateecall 11e3a9652a first 7 years ago lodash._stack 11e3a9652a first 7 years ago lodash.assign 11e3a9652a first 7 years ago lodash.camelcase 11e3a9652a first 7 years ago lodash.clone 11e3a9652a first 7 years ago lodash.clonedeep 11e3a9652a first 7 years ago lodash.create 11e3a9652a first 7 years ago lodash.defaultsdeep 11e3a9652a first 7 years ago lodash.isarguments 11e3a9652a first 7 years ago lodash.isarray 11e3a9652a first 7 years ago lodash.isplainobject 11e3a9652a first 7 years ago lodash.keys 11e3a9652a first 7 years ago lodash.keysin 11e3a9652a first 7 years ago lodash.memoize 11e3a9652a first 7 years ago lodash.mergewith 11e3a9652a first 7 years ago lodash.rest 11e3a9652a first 7 years ago lodash.sortby 11e3a9652a first 7 years ago lodash.tail 11e3a9652a first 7 years ago lodash.uniq 11e3a9652a first 7 years ago log-symbols 11e3a9652a first 7 years ago loglevel 11e3a9652a first 7 years ago longest 11e3a9652a first 7 years ago loose-envify 11e3a9652a first 7 years ago loud-rejection 11e3a9652a first 7 years ago lower-case 11e3a9652a first 7 years ago lru-cache 11e3a9652a first 7 years ago macaddress 11e3a9652a first 7 years ago make-dir 11e3a9652a first 7 years ago makeerror 11e3a9652a first 7 years ago map-cache 11e3a9652a first 7 years ago map-obj 11e3a9652a first 7 years ago map-visit 11e3a9652a first 7 years ago math-expression-evaluator 11e3a9652a first 7 years ago md5.js 11e3a9652a first 7 years ago media-typer 11e3a9652a first 7 years ago mem 11e3a9652a first 7 years ago memory-fs 11e3a9652a first 7 years ago meow 11e3a9652a first 7 years ago merge 11e3a9652a first 7 years ago merge-descriptors 11e3a9652a first 7 years ago merge-stream 11e3a9652a first 7 years ago methods 11e3a9652a first 7 years ago micromatch 11e3a9652a first 7 years ago miller-rabin 11e3a9652a first 7 years ago mime 11e3a9652a first 7 years ago mime-db 11e3a9652a first 7 years ago mime-types 11e3a9652a first 7 years ago mimic-fn 11e3a9652a first 7 years ago minimalistic-assert 11e3a9652a first 7 years ago minimalistic-crypto-utils 11e3a9652a first 7 years ago minimatch 11e3a9652a first 7 years ago minimist 11e3a9652a first 7 years ago mississippi 11e3a9652a first 7 years ago mixin-deep 11e3a9652a first 7 years ago mixin-object 11e3a9652a first 7 years ago mkdirp 11e3a9652a first 7 years ago mkpath 11e3a9652a first 7 years ago mocha-nightwatch 11e3a9652a first 7 years ago move-concurrently 11e3a9652a first 7 years ago ms 11e3a9652a first 7 years ago multicast-dns 11e3a9652a first 7 years ago multicast-dns-service-types 11e3a9652a first 7 years ago mute-stream 11e3a9652a first 7 years ago nan 11e3a9652a first 7 years ago nanomatch 11e3a9652a first 7 years ago natural-compare 11e3a9652a first 7 years ago negotiator 11e3a9652a first 7 years ago neo-async 11e3a9652a first 7 years ago netmask 11e3a9652a first 7 years ago next-tick 11e3a9652a first 7 years ago nightwatch 11e3a9652a first 7 years ago no-case 11e3a9652a first 7 years ago node-cache 11e3a9652a first 7 years ago node-forge 11e3a9652a first 7 years ago node-gyp 11e3a9652a first 7 years ago node-int64 11e3a9652a first 7 years ago node-libs-browser 11e3a9652a first 7 years ago node-notifier 11e3a9652a first 7 years ago node-sass 11e3a9652a first 7 years ago nopt 11e3a9652a first 7 years ago normalize-package-data 11e3a9652a first 7 years ago normalize-path 11e3a9652a first 7 years ago normalize-range 11e3a9652a first 7 years ago normalize-url 11e3a9652a first 7 years ago normalize-wheel 11e3a9652a first 7 years ago npm-run-path 11e3a9652a first 7 years ago npmlog 11e3a9652a first 7 years ago nth-check 11e3a9652a first 7 years ago num2fraction 11e3a9652a first 7 years ago number-is-nan 11e3a9652a first 7 years ago nwmatcher 11e3a9652a first 7 years ago oauth-sign 11e3a9652a first 7 years ago object-assign 11e3a9652a first 7 years ago object-copy 11e3a9652a first 7 years ago object-hash 11e3a9652a first 7 years ago object-keys 11e3a9652a first 7 years ago object-visit 11e3a9652a first 7 years ago object.getownpropertydescriptors 11e3a9652a first 7 years ago object.omit 11e3a9652a first 7 years ago object.pick 11e3a9652a first 7 years ago obuf 11e3a9652a first 7 years ago on-finished 11e3a9652a first 7 years ago on-headers 11e3a9652a first 7 years ago once 11e3a9652a first 7 years ago onetime 11e3a9652a first 7 years ago opener 11e3a9652a first 7 years ago opn 11e3a9652a first 7 years ago optimist 11e3a9652a first 7 years ago optimize-css-assets-webpack-plugin 11e3a9652a first 7 years ago optionator 11e3a9652a first 7 years ago ora 11e3a9652a first 7 years ago original 11e3a9652a first 7 years ago os-browserify 11e3a9652a first 7 years ago os-homedir 11e3a9652a first 7 years ago os-locale 11e3a9652a first 7 years ago os-tmpdir 11e3a9652a first 7 years ago osenv 11e3a9652a first 7 years ago p-finally 11e3a9652a first 7 years ago p-limit 11e3a9652a first 7 years ago p-locate 11e3a9652a first 7 years ago p-map 11e3a9652a first 7 years ago p-try 11e3a9652a first 7 years ago pac-proxy-agent 11e3a9652a first 7 years ago pac-resolver 11e3a9652a first 7 years ago pako 11e3a9652a first 7 years ago parallel-transform 11e3a9652a first 7 years ago param-case 11e3a9652a first 7 years ago parse-asn1 11e3a9652a first 7 years ago parse-glob 11e3a9652a first 7 years ago parse-json 11e3a9652a first 7 years ago parse5 11e3a9652a first 7 years ago parseurl 11e3a9652a first 7 years ago pascalcase 11e3a9652a first 7 years ago path-browserify 11e3a9652a first 7 years ago path-dirname 11e3a9652a first 7 years ago path-exists 11e3a9652a first 7 years ago path-is-absolute 11e3a9652a first 7 years ago path-is-inside 11e3a9652a first 7 years ago path-key 11e3a9652a first 7 years ago path-parse 11e3a9652a first 7 years ago path-to-regexp 11e3a9652a first 7 years ago path-type 11e3a9652a first 7 years ago pbkdf2 11e3a9652a first 7 years ago pend 11e3a9652a first 7 years ago performance-now 11e3a9652a first 7 years ago pify 11e3a9652a first 7 years ago pinkie 11e3a9652a first 7 years ago pinkie-promise 11e3a9652a first 7 years ago pkg-dir 11e3a9652a first 7 years ago pluralize 11e3a9652a first 7 years ago pn 11e3a9652a first 7 years ago portfinder 11e3a9652a first 7 years ago posix-character-classes 11e3a9652a first 7 years ago postcss 11e3a9652a first 7 years ago postcss-calc 11e3a9652a first 7 years ago postcss-colormin 11e3a9652a first 7 years ago postcss-convert-values 11e3a9652a first 7 years ago postcss-discard-comments 11e3a9652a first 7 years ago postcss-discard-duplicates 11e3a9652a first 7 years ago postcss-discard-empty 11e3a9652a first 7 years ago postcss-discard-overridden 11e3a9652a first 7 years ago postcss-discard-unused 11e3a9652a first 7 years ago postcss-filter-plugins 11e3a9652a first 7 years ago postcss-import 11e3a9652a first 7 years ago postcss-load-config 11e3a9652a first 7 years ago postcss-load-options 11e3a9652a first 7 years ago postcss-load-plugins 11e3a9652a first 7 years ago postcss-loader 11e3a9652a first 7 years ago postcss-merge-idents 11e3a9652a first 7 years ago postcss-merge-longhand 11e3a9652a first 7 years ago postcss-merge-rules 11e3a9652a first 7 years ago postcss-message-helpers 11e3a9652a first 7 years ago postcss-minify-font-values 11e3a9652a first 7 years ago postcss-minify-gradients 11e3a9652a first 7 years ago postcss-minify-params 11e3a9652a first 7 years ago postcss-minify-selectors 11e3a9652a first 7 years ago postcss-modules-extract-imports 11e3a9652a first 7 years ago postcss-modules-local-by-default 11e3a9652a first 7 years ago postcss-modules-scope 11e3a9652a first 7 years ago postcss-modules-values 11e3a9652a first 7 years ago postcss-normalize-charset 11e3a9652a first 7 years ago postcss-normalize-url 11e3a9652a first 7 years ago postcss-ordered-values 11e3a9652a first 7 years ago postcss-reduce-idents 11e3a9652a first 7 years ago postcss-reduce-initial 11e3a9652a first 7 years ago postcss-reduce-transforms 11e3a9652a first 7 years ago postcss-selector-parser 11e3a9652a first 7 years ago postcss-svgo 11e3a9652a first 7 years ago postcss-unique-selectors 11e3a9652a first 7 years ago postcss-url 11e3a9652a first 7 years ago postcss-value-parser 11e3a9652a first 7 years ago postcss-zindex 11e3a9652a first 7 years ago prelude-ls 11e3a9652a first 7 years ago prepend-http 11e3a9652a first 7 years ago preserve 11e3a9652a first 7 years ago prettier 11e3a9652a first 7 years ago pretty 11e3a9652a first 7 years ago pretty-error 11e3a9652a first 7 years ago pretty-format 11e3a9652a first 7 years ago private 11e3a9652a first 7 years ago process 11e3a9652a first 7 years ago process-nextick-args 11e3a9652a first 7 years ago progress 11e3a9652a first 7 years ago promise-inflight 11e3a9652a first 7 years ago proto-list 11e3a9652a first 7 years ago proxy-addr 11e3a9652a first 7 years ago proxy-agent 11e3a9652a first 7 years ago prr 11e3a9652a first 7 years ago pseudomap 11e3a9652a first 7 years ago public-encrypt 11e3a9652a first 7 years ago pump 11e3a9652a first 7 years ago pumpify 11e3a9652a first 7 years ago punycode 11e3a9652a first 7 years ago q 11e3a9652a first 7 years ago qrcodejs2 11e3a9652a first 7 years ago qs 11e3a9652a first 7 years ago query-string 11e3a9652a first 7 years ago querystring 11e3a9652a first 7 years ago querystring-es3 11e3a9652a first 7 years ago querystringify 11e3a9652a first 7 years ago randomatic 11e3a9652a first 7 years ago randombytes 11e3a9652a first 7 years ago randomfill 11e3a9652a first 7 years ago range-parser 11e3a9652a first 7 years ago raw-body 11e3a9652a first 7 years ago read-cache 11e3a9652a first 7 years ago read-pkg 11e3a9652a first 7 years ago read-pkg-up 11e3a9652a first 7 years ago readable-stream 11e3a9652a first 7 years ago readdirp 11e3a9652a first 7 years ago realpath-native 11e3a9652a first 7 years ago rechoir 11e3a9652a first 7 years ago redent 11e3a9652a first 7 years ago reduce-css-calc 11e3a9652a first 7 years ago reduce-function-call 11e3a9652a first 7 years ago regenerate 11e3a9652a first 7 years ago regenerator-runtime 11e3a9652a first 7 years ago regenerator-transform 11e3a9652a first 7 years ago regex-cache 11e3a9652a first 7 years ago regex-not 11e3a9652a first 7 years ago regexpp 11e3a9652a first 7 years ago regexpu-core 11e3a9652a first 7 years ago regjsgen 11e3a9652a first 7 years ago regjsparser 11e3a9652a first 7 years ago relateurl 11e3a9652a first 7 years ago remove-trailing-separator 11e3a9652a first 7 years ago renderkid 11e3a9652a first 7 years ago repeat-element 11e3a9652a first 7 years ago repeat-string 11e3a9652a first 7 years ago repeating 11e3a9652a first 7 years ago request 11e3a9652a first 7 years ago request-promise-core 11e3a9652a first 7 years ago request-promise-native 11e3a9652a first 7 years ago require-directory 11e3a9652a first 7 years ago require-from-string 11e3a9652a first 7 years ago require-main-filename 11e3a9652a first 7 years ago require-uncached 11e3a9652a first 7 years ago requires-port 11e3a9652a first 7 years ago resize-observer-polyfill 11e3a9652a first 7 years ago resolve 11e3a9652a first 7 years ago resolve-cwd 11e3a9652a first 7 years ago resolve-from 11e3a9652a first 7 years ago resolve-url 11e3a9652a first 7 years ago restore-cursor 11e3a9652a first 7 years ago ret 11e3a9652a first 7 years ago right-align 11e3a9652a first 7 years ago rimraf 11e3a9652a first 7 years ago ripemd160 11e3a9652a first 7 years ago run-async 11e3a9652a first 7 years ago run-queue 11e3a9652a first 7 years ago rx-lite 11e3a9652a first 7 years ago rx-lite-aggregates 11e3a9652a first 7 years ago safe-buffer 11e3a9652a first 7 years ago safe-regex 11e3a9652a first 7 years ago safer-buffer 11e3a9652a first 7 years ago sane 11e3a9652a first 7 years ago sass-graph 11e3a9652a first 7 years ago sass-loader 11e3a9652a first 7 years ago sax 11e3a9652a first 7 years ago schema-utils 11e3a9652a first 7 years ago scss-tokenizer 11e3a9652a first 7 years ago select-hose 11e3a9652a first 7 years ago selenium-server 11e3a9652a first 7 years ago selfsigned 11e3a9652a first 7 years ago semver 11e3a9652a first 7 years ago send 11e3a9652a first 7 years ago serialize-javascript 11e3a9652a first 7 years ago serve-index 11e3a9652a first 7 years ago serve-static 11e3a9652a first 7 years ago set-blocking 11e3a9652a first 7 years ago set-immediate-shim 11e3a9652a first 7 years ago set-value 11e3a9652a first 7 years ago setimmediate 11e3a9652a first 7 years ago setprototypeof 11e3a9652a first 7 years ago sha.js 11e3a9652a first 7 years ago shallow-clone 11e3a9652a first 7 years ago shebang-command 11e3a9652a first 7 years ago shebang-regex 11e3a9652a first 7 years ago shelljs 11e3a9652a first 7 years ago shellwords 11e3a9652a first 7 years ago sigmund 11e3a9652a first 7 years ago signal-exit 11e3a9652a first 7 years ago slash 11e3a9652a first 7 years ago slice-ansi 11e3a9652a first 7 years ago smart-buffer 11e3a9652a first 7 years ago snapdragon 11e3a9652a first 7 years ago snapdragon-node 11e3a9652a first 7 years ago snapdragon-util 11e3a9652a first 7 years ago sntp 11e3a9652a first 7 years ago sockjs 11e3a9652a first 7 years ago sockjs-client 11e3a9652a first 7 years ago socks 11e3a9652a first 7 years ago socks-proxy-agent 11e3a9652a first 7 years ago sort-keys 11e3a9652a first 7 years ago source-list-map 11e3a9652a first 7 years ago source-map 11e3a9652a first 7 years ago source-map-resolve 11e3a9652a first 7 years ago source-map-support 11e3a9652a first 7 years ago source-map-url 11e3a9652a first 7 years ago spdx-correct 11e3a9652a first 7 years ago spdx-exceptions 11e3a9652a first 7 years ago spdx-expression-parse 11e3a9652a first 7 years ago spdx-license-ids 11e3a9652a first 7 years ago spdy 11e3a9652a first 7 years ago spdy-transport 11e3a9652a first 7 years ago split-string 11e3a9652a first 7 years ago sprintf-js 11e3a9652a first 7 years ago sshpk 11e3a9652a first 7 years ago ssri 11e3a9652a first 7 years ago stack-utils 11e3a9652a first 7 years ago stackframe 11e3a9652a first 7 years ago static-extend 11e3a9652a first 7 years ago statuses 11e3a9652a first 7 years ago stdout-stream 11e3a9652a first 7 years ago stealthy-require 11e3a9652a first 7 years ago stream-browserify 11e3a9652a first 7 years ago stream-each 11e3a9652a first 7 years ago stream-http 11e3a9652a first 7 years ago stream-shift 11e3a9652a first 7 years ago strict-uri-encode 11e3a9652a first 7 years ago string-length 11e3a9652a first 7 years ago string-width 11e3a9652a first 7 years ago string_decoder 11e3a9652a first 7 years ago stringstream 11e3a9652a first 7 years ago strip-ansi 11e3a9652a first 7 years ago strip-bom 11e3a9652a first 7 years ago strip-eof 11e3a9652a first 7 years ago strip-indent 11e3a9652a first 7 years ago strip-json-comments 11e3a9652a first 7 years ago supports-color 11e3a9652a first 7 years ago svg-tags 11e3a9652a first 7 years ago svgo 11e3a9652a first 7 years ago symbol-tree 11e3a9652a first 7 years ago table 11e3a9652a first 7 years ago tapable 11e3a9652a first 7 years ago tar 11e3a9652a first 7 years ago test-exclude 11e3a9652a first 7 years ago text-table 11e3a9652a first 7 years ago throat 11e3a9652a first 7 years ago throttle-debounce 11e3a9652a first 7 years ago through 11e3a9652a first 7 years ago through2 11e3a9652a first 7 years ago thunkify 11e3a9652a first 7 years ago thunky 11e3a9652a first 7 years ago time-stamp 11e3a9652a first 7 years ago timers-browserify 11e3a9652a first 7 years ago tmp 11e3a9652a first 7 years ago tmpl 11e3a9652a first 7 years ago to-arraybuffer 11e3a9652a first 7 years ago to-fast-properties 11e3a9652a first 7 years ago to-object-path 11e3a9652a first 7 years ago to-regex 11e3a9652a first 7 years ago to-regex-range 11e3a9652a first 7 years ago toposort 11e3a9652a first 7 years ago tough-cookie 11e3a9652a first 7 years ago tr46 11e3a9652a first 7 years ago trim-newlines 11e3a9652a first 7 years ago trim-right 11e3a9652a first 7 years ago true-case-path 11e3a9652a first 7 years ago tryer 11e3a9652a first 7 years ago tsconfig 11e3a9652a first 7 years ago tty-browserify 11e3a9652a first 7 years ago tunnel-agent 11e3a9652a first 7 years ago tweetnacl 11e3a9652a first 7 years ago type-check 11e3a9652a first 7 years ago type-detect 11e3a9652a first 7 years ago type-is 11e3a9652a first 7 years ago typedarray 11e3a9652a first 7 years ago uglify-js 11e3a9652a first 7 years ago uglify-to-browserify 11e3a9652a first 7 years ago uglifyjs-webpack-plugin 11e3a9652a first 7 years ago union-value 11e3a9652a first 7 years ago uniq 11e3a9652a first 7 years ago uniqid 11e3a9652a first 7 years ago uniqs 11e3a9652a first 7 years ago unique-filename 11e3a9652a first 7 years ago unique-slug 11e3a9652a first 7 years ago unpipe 11e3a9652a first 7 years ago unset-value 11e3a9652a first 7 years ago upath 11e3a9652a first 7 years ago upper-case 11e3a9652a first 7 years ago uri-js 11e3a9652a first 7 years ago urix 11e3a9652a first 7 years ago url 11e3a9652a first 7 years ago url-loader 11e3a9652a first 7 years ago url-parse 11e3a9652a first 7 years ago use 11e3a9652a first 7 years ago util 11e3a9652a first 7 years ago util-deprecate 11e3a9652a first 7 years ago util.promisify 11e3a9652a first 7 years ago utila 11e3a9652a first 7 years ago utils-merge 11e3a9652a first 7 years ago uuid 11e3a9652a first 7 years ago validate-npm-package-license 11e3a9652a first 7 years ago vary 11e3a9652a first 7 years ago vendors 11e3a9652a first 7 years ago verror 11e3a9652a first 7 years ago vm-browserify 11e3a9652a first 7 years ago vue 11e3a9652a first 7 years ago vue-eslint-parser 11e3a9652a first 7 years ago vue-hot-reload-api 11e3a9652a first 7 years ago vue-jest 11e3a9652a first 7 years ago vue-loader 11e3a9652a first 7 years ago vue-router 11e3a9652a first 7 years ago vue-style-loader 11e3a9652a first 7 years ago vue-template-compiler 11e3a9652a first 7 years ago vue-template-es2015-compiler 11e3a9652a first 7 years ago w3c-hr-time 11e3a9652a first 7 years ago walker 11e3a9652a first 7 years ago watch 11e3a9652a first 7 years ago watchpack 11e3a9652a first 7 years ago wbuf 11e3a9652a first 7 years ago webidl-conversions 11e3a9652a first 7 years ago webpack 11e3a9652a first 7 years ago webpack-bundle-analyzer 11e3a9652a first 7 years ago webpack-dev-middleware 11e3a9652a first 7 years ago webpack-dev-server 11e3a9652a first 7 years ago webpack-merge 11e3a9652a first 7 years ago webpack-sources 11e3a9652a first 7 years ago websocket-driver 11e3a9652a first 7 years ago websocket-extensions 11e3a9652a first 7 years ago whatwg-encoding 11e3a9652a first 7 years ago whatwg-mimetype 11e3a9652a first 7 years ago whatwg-url 11e3a9652a first 7 years ago whet.extend 11e3a9652a first 7 years ago which 11e3a9652a first 7 years ago which-module 11e3a9652a first 7 years ago wide-align 11e3a9652a first 7 years ago window-size 11e3a9652a first 7 years ago wordwrap 11e3a9652a first 7 years ago worker-farm 11e3a9652a first 7 years ago wrap-ansi 11e3a9652a first 7 years ago wrappy 11e3a9652a first 7 years ago write 11e3a9652a first 7 years ago write-file-atomic 11e3a9652a first 7 years ago ws 11e3a9652a first 7 years ago xml-name-validator 11e3a9652a first 7 years ago xregexp 11e3a9652a first 7 years ago xtend 11e3a9652a first 7 years ago xxhashjs 11e3a9652a first 7 years ago y18n 11e3a9652a first 7 years ago yallist 11e3a9652a first 7 years ago yargs 11e3a9652a first 7 years ago yargs-parser 11e3a9652a first 7 years ago yauzl 11e3a9652a first 7 years ago zrender 11e3a9652a first 7 years ago pai2 - Gogs: Go Git Service

拍爱

groupuser_views.py 5.5KB

    # -*- coding: utf-8 -*- from __future__ import division from django_logit import logit from django_response import response from TimeConvert import TimeConvert as tc from account.models import UserInfo from group.models import GroupInfo, GroupUserInfo from utils.error.errno_utils import GroupStatusCode, GroupUserStatusCode, UserStatusCode from utils.group_photo_utils import get_current_photos from utils.redis.connect import r from utils.redis.rgroup import get_group_info, get_group_users_info, set_group_users_info from utils.redis.rkeys import (GROUP_LAST_PHOTO_PK, GROUP_USERS_DELETED_SET, GROUP_USERS_PASSED_SET, GROUP_USERS_QUIT_SET, GROUP_USERS_REFUSED_SET) @logit def group_user_join_api(request): """ 群成员加群 """ group_id = request.POST.get('group_id', '') user_id = request.POST.get('user_id', '') nickname = request.POST.get('nickname', '') # 用户校验 try: user = UserInfo.objects.get(user_id=user_id, status=True) except UserInfo.DoesNotExist: return response(UserStatusCode.USER_NOT_FOUND) # 群组校验 try: group = GroupInfo.objects.get(group_id=group_id, status=True) except GroupInfo.DoesNotExist: return response(GroupStatusCode.GROUP_NOT_FOUND) # 群组锁定校验 if group.group_lock: return response(GroupStatusCode.GROUP_HAS_LOCKED) # 群组用户记录创建,若记录不存在,则创建,若记录已存在,则更新 group_user, created = GroupUserInfo.objects.get_or_create( group_id=group_id, user_id=user_id, ) if group_user.user_status != GroupUserInfo.PASSED: group_user.current_id = -1 if group.group_from == GroupInfo.SESSION_GROUP else int(r.get(GROUP_LAST_PHOTO_PK % group_id) or -1) group_user.nickname = nickname or user.final_nickname group_user.avatar = user.avatar # group_user.admin = False # Admin Field Default False, Should Not Assign group_user.user_status = GroupUserInfo.PASSED group_user.passed_at = tc.utc_datetime() group_user.save() # Redis 群组用户数据缓存 set_group_users_info(group) # Redis 群组通过集合缓存 r.srem(GROUP_USERS_REFUSED_SET % group_id, user_id) r.srem(GROUP_USERS_DELETED_SET % group_id, user_id) r.srem(GROUP_USERS_QUIT_SET % group_id, user_id) r.sadd(GROUP_USERS_PASSED_SET % group_id, user_id) curinfo = get_current_photos(group_id, user_id, group_user.current_id, request=request) return response(200, 'Group User Join Success', u'群成员加群成功', { 'current_id': curinfo.get('current_id', ''), 'photos': curinfo.get('photos', ''), 'group_id': group_id, 'group': get_group_info(group_id), 'user_id': user_id, 'users': get_group_users_info(group_id, user_id), }) @logit def group_user_remove_api(request): """ 群成员移除,管理员主动,群成员被动 """ group_id = request.POST.get('group_id', '') admin_id = request.POST.get('admin_id', '') user_id = request.POST.get('user_id', '') # 群组校验 try: group = GroupInfo.objects.get(group_id=group_id, status=True) except GroupInfo.DoesNotExist: return response(GroupStatusCode.GROUP_NOT_FOUND) # 权限校验 if group.admin_id != admin_id: return response(GroupStatusCode.NOT_GROUP_ADMIN) # 管理员也不允许将自己移除 if group.admin_id == user_id: return response(GroupStatusCode.ADMIN_CANNOT_HANDLE_SELF) # 群组用户校验 try: group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True) except GroupUserInfo.DoesNotExist: return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND) # 群组用户移除 group_user.user_status = GroupUserInfo.DELETED group_user.deleted_at = tc.utc_datetime() group_user.save() # Redis 群组数据缓存更新 group_users = set_group_users_info(group) # Redis 群组删除集合缓存 r.srem(GROUP_USERS_PASSED_SET % group_id, user_id) r.sadd(GROUP_USERS_DELETED_SET % group_id, user_id) return response(200, 'Group User Remove Success', u'群成员移除成功', { 'group_id': group_id, 'users': group_users, }) @logit def group_user_quit_api(request): """ 群成员退出,群成员主动 """ group_id = request.POST.get('group_id', '') user_id = request.POST.get('user_id', '') # 群组校验 try: group = GroupInfo.objects.get(group_id=group_id, status=True) except GroupInfo.DoesNotExist: return response(GroupStatusCode.GROUP_NOT_FOUND) # 权限校验 if group.admin_id == user_id: # 管理员也不允许自己退出 return response(GroupStatusCode.NOT_GROUP_ADMIN) # 群组用户校验 try: group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, status=True) except GroupUserInfo.DoesNotExist: return response(GroupUserStatusCode.GROUP_USER_NOT_FOUND) # 群组用户移除 group_user.user_status = GroupUserInfo.QUIT group_user.quit_at = tc.utc_datetime() group_user.save() # Redis 群组数据缓存更新 group_users = set_group_users_info(group) # Redis 群组删除集合缓存 r.srem(GROUP_USERS_PASSED_SET % group_id, user_id) r.sadd(GROUP_USERS_QUIT_SET % group_id, user_id) return response(200, 'Group User Quit Success', u'群成员退出成功', { 'group_id': group_id, 'users': group_users, })