terminal.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. import { message } from 'antd';
  2. import { routerRedux } from 'dva/router';
  3. import {
  4. deviceUnbound,
  5. queryTerminalList,
  6. createTerminalItem,
  7. updateTerminalItem,
  8. deleteTerminalItem,
  9. querySpecialTerminalList,
  10. querySpecialTerminalItem,
  11. createSpecialTerminalItem,
  12. updateSpecialTerminalItem,
  13. deleteSpecialTerminalItem,
  14. queryTerminalAuthList,
  15. queryTerminalTagList,
  16. queryTerminalTagItem,
  17. createTerminalTagItem,
  18. updateTerminalTagItem,
  19. deleteTerminalTagItem,
  20. queryTerminalRecommendCourse,
  21. updateTerminalRecommendCourse,
  22. copyMerchantTag,
  23. } from '../services/terminal';
  24. export default {
  25. namespace: 'terminal',
  26. state: {
  27. list: [],
  28. pageNo: 1,
  29. pageSize: 15,
  30. totalSize: 0,
  31. currentItem: {},
  32. userTagList: [],
  33. userRecCourse: [],
  34. currentUserTagItem: {},
  35. },
  36. effects: {
  37. *fetchTerminalList({ payload }, { call, put }) {
  38. const response = yield call(queryTerminalList, payload);
  39. if (response.success) {
  40. yield put({
  41. type: 'querySuccess',
  42. payload: {
  43. list: response.data.list || [],
  44. pageSize: response.data.pageSize,
  45. totalSize: response.data.totalSize,
  46. pageNo: response.data.pageNo,
  47. },
  48. });
  49. }
  50. },
  51. *createTerminalItem({ payload, state }, { call, put }) {
  52. const response = yield call(createTerminalItem, payload);
  53. if (response.success) {
  54. message.success('创建终端成功');
  55. yield put(routerRedux.push({
  56. state,
  57. pathname: '/terminal/user/list',
  58. }));
  59. }
  60. },
  61. *deleteTerminalItem({ payload, states }, { call, put }) {
  62. const response = yield call(deleteTerminalItem, payload);
  63. if (response.success) {
  64. message.success('禁用终端成功');
  65. yield put({
  66. type: 'fetchTerminalList',
  67. payload: states.Queryers,
  68. });
  69. }
  70. },
  71. *recoverTerminalItem({ payload, states }, { call, put }) {
  72. const response = yield call(updateTerminalItem, payload);
  73. if (response.success) {
  74. message.success('解禁终端成功');
  75. yield put({
  76. type: 'fetchTerminalList',
  77. payload: states.Queryers,
  78. });
  79. }
  80. },
  81. *updateTerminalItem({ payload, states }, { call, put }) {
  82. const response = yield call(updateTerminalItem, payload);
  83. if (response.success) {
  84. message.success('修改终端成功');
  85. yield put(routerRedux.push({
  86. pathname: '/terminal/user/list',
  87. state: states,
  88. }));
  89. }
  90. },
  91. *fetchSpecialTerminalList({ payload }, { call, put }) {
  92. const response = yield call(querySpecialTerminalList, payload);
  93. if (response.success) {
  94. yield put({
  95. type: 'querySuccess',
  96. payload: {
  97. list: response.data.list || [],
  98. pageSize: response.data.pageSize,
  99. totalSize: response.data.totalSize,
  100. pageNo: response.data.pageNo,
  101. },
  102. });
  103. }
  104. },
  105. *fetchSpecialTerminalItem({ payload }, { call, put }) {
  106. const response = yield call(querySpecialTerminalItem, payload);
  107. if (response.success) {
  108. yield put({
  109. type: 'querySuccess',
  110. payload: {
  111. currentItem: response.data,
  112. },
  113. });
  114. }
  115. },
  116. *createSpecialTerminalItem({ payload, states }, { call, put }) {
  117. const response = yield call(createSpecialTerminalItem, payload);
  118. if (response.success) {
  119. message.success('创建白名单用户成功');
  120. yield put(routerRedux.push({
  121. state: states,
  122. pathname: '/terminal/whitelist/list',
  123. }));
  124. }
  125. },
  126. *deleteSpecialTerminalItem({ payload, states }, { call, put }) {
  127. const response = yield call(deleteSpecialTerminalItem, payload);
  128. if (response.success) {
  129. message.success('删除白名单用户成功');
  130. yield put({
  131. type: 'fetchSpecialTerminalList',
  132. payload: states.Queryers,
  133. });
  134. }
  135. },
  136. *updateSpecialTerminalItem({ payload, states }, { call, put }) {
  137. const response = yield call(updateSpecialTerminalItem, payload);
  138. if (response.success) {
  139. message.success('修改白名单用户成功');
  140. yield put(routerRedux.push({
  141. pathname: '/terminal/whitelist/list',
  142. state: states,
  143. }));
  144. }
  145. },
  146. *deviceUnbound({ payload, states }, { call, put }) {
  147. const response = yield call(deviceUnbound, payload);
  148. if (response.success) {
  149. message.success('账号已成功解绑');
  150. yield put({
  151. type: 'fetchTerminalList',
  152. payload: states.Queryers,
  153. });
  154. }
  155. },
  156. *fetchTerminalAuthList({ payload }, { call, put }) {
  157. const response = yield call(queryTerminalAuthList, payload);
  158. if (response.success) {
  159. yield put({
  160. type: 'querySuccess',
  161. payload: {
  162. list: response.data.list || [],
  163. pageSize: response.data.pageSize,
  164. totalSize: response.data.totalSize,
  165. pageNo: response.data.pageNo,
  166. },
  167. });
  168. }
  169. },
  170. *fetchTerminalTagList({ payload }, { call, put }) {
  171. const response = yield call(queryTerminalTagList, payload);
  172. if (response.success) {
  173. yield put({
  174. type: 'querySuccess',
  175. payload: {
  176. userTagList: response.data || [],
  177. },
  178. });
  179. }
  180. },
  181. *fetchTerminalTagItem({ payload }, { call, put }) {
  182. const response = yield call(queryTerminalTagItem, payload);
  183. if (response.success) {
  184. yield put({
  185. type: 'querySuccess',
  186. payload: {
  187. currentUserTagItem: response.data || {},
  188. },
  189. });
  190. }
  191. },
  192. *createTerminalTagItem({ payload }, { call, put }) {
  193. const response = yield call(createTerminalTagItem, payload);
  194. if (response.success) {
  195. message.success('终端用户标签创建成功');
  196. const { uid } = payload;
  197. yield put({
  198. type: 'fetchTerminalTagList',
  199. payload: { uid },
  200. });
  201. }
  202. },
  203. *updateTerminalTagItem({ payload }, { call, put }) {
  204. const response = yield call(updateTerminalTagItem, payload);
  205. if (response.success) {
  206. message.success('终端用户标签修改成功');
  207. const { uid } = payload;
  208. yield put({
  209. type: 'fetchTerminalTagList',
  210. payload: { uid },
  211. });
  212. }
  213. },
  214. *deleteTerminalTagItem({ payload }, { call, put }) {
  215. const response = yield call(deleteTerminalTagItem, payload);
  216. if (response.success) {
  217. message.success('终端用户标签删除成功');
  218. const { uid } = payload;
  219. yield put({
  220. type: 'fetchTerminalTagList',
  221. payload: { uid },
  222. });
  223. }
  224. },
  225. *copyMerchantTagToUser({ payload }, { call, put }) {
  226. const { uid, ...rest } = payload;
  227. const response = yield call(copyMerchantTag, rest);
  228. if (response.success) {
  229. message.success('复制渠道标签成功');
  230. yield put({
  231. type: 'fetchTerminalTagList',
  232. payload: { uid },
  233. });
  234. }
  235. },
  236. *fetchTerminalRecommendCourse({ payload }, { call, put }) {
  237. const response = yield call(queryTerminalRecommendCourse, payload);
  238. if (response.success) {
  239. yield put({
  240. type: 'querySuccess',
  241. payload: {
  242. userRecCourse: response.data || [],
  243. },
  244. });
  245. }
  246. },
  247. *updateTerminalRecommendCourse({ payload }, { call, put }) {
  248. const response = yield call(updateTerminalRecommendCourse, payload);
  249. if (response.success) {
  250. message.success('修改用户推荐课程成功');
  251. const { uid } = payload;
  252. yield put({
  253. type: 'fetchTerminalRecommendCourse',
  254. payload: { uid },
  255. });
  256. }
  257. },
  258. },
  259. reducers: {
  260. querySuccess(state, action) {
  261. return {
  262. ...state,
  263. ...action.payload,
  264. };
  265. },
  266. fixCurrentItem(state, action) {
  267. const { currentItem } = state;
  268. return {
  269. ...state,
  270. currentItem: {
  271. ...currentItem,
  272. ...action.payload,
  273. },
  274. };
  275. },
  276. fixCurrentUserTagItem(state, action) {
  277. const { currentUserTagItem } = state;
  278. return {
  279. ...state,
  280. currentUserTagItem: {
  281. ...currentUserTagItem,
  282. ...action.payload,
  283. },
  284. };
  285. },
  286. fixUserRecCourse(state, action) {
  287. return {
  288. ...state,
  289. userRecCourse: action.payload,
  290. };
  291. },
  292. cleanState(state) {
  293. return {
  294. ...state,
  295. list: [],
  296. pageNo: 1,
  297. pageSize: 15,
  298. totalSize: 0,
  299. userTagList: [],
  300. userRecCourse: [],
  301. currentItem: {},
  302. currentUserTagItem: {},
  303. };
  304. },
  305. resetUserTagItem(state) {
  306. return {
  307. ...state,
  308. currentUserTagItem: {},
  309. };
  310. },
  311. },
  312. };