diff --git a/docs/databases/tables_modify.sql b/docs/databases/tables_modify.sql
index c875e16..5b5776a 100644
--- a/docs/databases/tables_modify.sql
+++ b/docs/databases/tables_modify.sql
@@ -21,4 +21,12 @@ insert into sys_message values
(3,341,'交易物流','您有新的物流信息','您的订单商品已经到取货点,请在7日内取出。',now(),now(),0,1),
(4,341,'云链助手','该施肥了','春天已经至,已到施肥时间。。',now(),now(),0,1);
-SELECT id,user_id,code,params,content,ctime,utime,status FROM sys_message WHERE user_id = 341 ORDER BY ctime desc
\ No newline at end of file
+SELECT id,user_id,code,params,content,ctime,utime,status FROM sys_message WHERE user_id = 341 ORDER BY ctime desc
+
+
+ALTER TABLE mallplus1.sys_message MODIFY COLUMN id int(10) unsigned auto_increment NOT NULL;
+ALTER TABLE mallplus1.sys_message MODIFY COLUMN status tinyint(3) unsigned DEFAULT 0 NOT NULL COMMENT '0未查看,1已查看';
+ALTER TABLE mallplus1.sys_message MODIFY COLUMN utime bigint(20) unsigned NULL COMMENT '查看时间';
+ALTER TABLE mallplus1.sys_message MODIFY COLUMN content text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容';
+ALTER TABLE mallplus1.sys_message MODIFY COLUMN params varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '参数';
+ALTER TABLE mallplus1.sys_message MODIFY COLUMN code varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '消息编码';
diff --git a/docs/images/icon物流.png b/docs/images/icon物流.png
new file mode 100644
index 0000000..f8b523b
Binary files /dev/null and b/docs/images/icon物流.png differ
diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageController.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageController.java
index 7cac749..5645929 100644
--- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageController.java
+++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageController.java
@@ -1,7 +1,18 @@
package com.zscat.mallplus.ums.controller;
+import com.zscat.mallplus.annotation.SysLog;
+import com.zscat.mallplus.ums.entity.SysMessage;
+import com.zscat.mallplus.ums.entity.UmsMember;
import com.zscat.mallplus.ums.service.ISysMessageService;
+import com.zscat.mallplus.ums.vo.SysMessageSendSelectVo;
+import com.zscat.mallplus.utils.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -19,8 +30,49 @@ import javax.annotation.Resource;
@RequestMapping("/ums/sysMessage")
public class SysMessageController {
+ private static final Logger log = LoggerFactory.getLogger(SysMessageController.class);
+
@Resource
private ISysMessageService messageService;
+ @PostMapping(value = "/sendToOne")
+ public Object sendToOne(@RequestBody SysMessage entity) {
+ try {
+ if (messageService.sendToOne(entity)) {
+ return new CommonResult().success();
+ }
+ } catch (Exception e) {
+ log.error("向指定会员 {} 发信息失败:{}", entity.getUserId(), e.getMessage());
+ return new CommonResult().failed();
+ }
+ return new CommonResult().failed();
+ }
+
+ @PostMapping(value = "/sendToAll")
+ public Object sendToAll(@RequestBody SysMessage entity) {
+ try {
+ if (messageService.sendToAll(entity)) {
+ return new CommonResult().success();
+ }
+ } catch (Exception e) {
+ log.error("向所有会员发信息失败:{}", e.getMessage());
+ return new CommonResult().failed();
+ }
+ return new CommonResult().failed();
+ }
+
+ @PostMapping(value = "/sendToSelect")
+ public Object sendToSelect(@RequestBody SysMessageSendSelectVo vo) {
+ try {
+ if (messageService.sendToSelect(vo)) {
+ return new CommonResult().success();
+ }
+ } catch (Exception e) {
+ log.error("向所选会员发信息失败:{}", e.getMessage());
+ return new CommonResult().failed();
+ }
+ return new CommonResult().failed();
+ }
+
}
diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/UmsMemberController.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/UmsMemberController.java
index e01c0d7..7841161 100644
--- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/UmsMemberController.java
+++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/UmsMemberController.java
@@ -174,7 +174,7 @@ public class UmsMemberController {
@SysLog(MODULE = "ums", REMARK = "删除会员表")
@ApiOperation("删除会员表")
@GetMapping(value = "/delete/{id}")
- @PreAuthorize("hasAuthority('ums:UmsMember:delete')")
+// @PreAuthorize("hasAuthority('ums:UmsMember:delete')")
public Object deleteUmsMember(@ApiParam("会员表id") @PathVariable Long id) {
try {
if (ValidatorUtils.empty(id)) {
diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java
index 736a5bc..40b4684 100644
--- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java
+++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java
@@ -2,6 +2,7 @@ package com.zscat.mallplus.ums.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zscat.mallplus.ums.entity.SysMessage;
+import com.zscat.mallplus.ums.vo.SysMessageSendSelectVo;
/**
*
@@ -13,4 +14,11 @@ import com.zscat.mallplus.ums.entity.SysMessage;
*/
public interface ISysMessageService extends IService {
+ boolean sendToOne(SysMessage entity);
+
+ boolean sendToAll(SysMessage entity);
+
+ boolean sendToSelect(SysMessageSendSelectVo vo);
+
+ boolean sendOrderDeliver(String orderNo,Integer userId);
}
diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java
index 6f5967d..2d34d88 100644
--- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java
+++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.zscat.mallplus.ums.entity.UmsMember;
import org.apache.ibatis.annotations.Param;
+import java.util.List;
import java.util.Map;
/**
@@ -19,4 +20,6 @@ public interface IUmsMemberService extends IService {
void updataMemberOrderInfo();
Map memberMonthStatic( String date);
+
+ List listAll();
}
diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java
index 066e05d..2376693 100644
--- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java
+++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java
@@ -2,10 +2,17 @@ package com.zscat.mallplus.ums.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zscat.mallplus.ums.entity.SysMessage;
+import com.zscat.mallplus.ums.entity.UmsMember;
import com.zscat.mallplus.ums.mapper.SysMessageMapper;
import com.zscat.mallplus.ums.service.ISysMessageService;
+import com.zscat.mallplus.ums.service.IUmsMemberService;
+import com.zscat.mallplus.ums.vo.SysMessageSendSelectVo;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.List;
+
/**
*
* 站内信 服务实现类
@@ -17,4 +24,51 @@ import org.springframework.stereotype.Service;
@Service
public class SysMessageServiceImpl extends ServiceImpl implements ISysMessageService {
+ @Autowired
+ private IUmsMemberService memberService;
+
+ @Override
+ public boolean sendToOne(SysMessage entity) {
+ entity.setId(null);
+ return this.save(entity);
+ }
+
+ @Override
+ public boolean sendToAll(SysMessage entity) {
+ List memberList = memberService.listAll();
+// List messList = new ArrayList<>();
+ for (UmsMember member : memberList) {
+// SysMessage
+ entity.setId(null);
+ Integer id = Math.toIntExact(member.getId());
+ entity.setUserId(id);
+// messList.add(en)
+ this.save(entity);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean sendToSelect(SysMessageSendSelectVo vo) {
+ SysMessage entity = vo.getSysMessage();
+ List userIdList = vo.getUserIdList();
+ for (Integer memberId : userIdList) {
+ entity.setId(null);
+ entity.setUserId(memberId);
+ this.save(entity);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean sendOrderDeliver(String orderNo, Integer userId) {
+ SysMessage entity = new SysMessage();
+ entity.setId(null);
+ entity.setCode("交易物流");
+ entity.setParams("货物已发出");
+ entity.setContent("你的订单号码为:"+orderNo+" 的货物已经发出,请您留意物流信息!");
+ entity.setUserId(userId);
+ this.save(entity);
+ return true;
+ }
}
diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java
index 808a2e2..16703b1 100644
--- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java
+++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java
@@ -58,4 +58,9 @@ public class UmsMemberServiceImpl extends ServiceImpl listAll() {
+ return baseMapper.selectList(new QueryWrapper());
+ }
}
diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/vo/SysMessageSendSelectVo.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/vo/SysMessageSendSelectVo.java
new file mode 100644
index 0000000..1717df4
--- /dev/null
+++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/vo/SysMessageSendSelectVo.java
@@ -0,0 +1,29 @@
+package com.zscat.mallplus.ums.vo;
+
+import com.zscat.mallplus.ums.entity.SysMessage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SysMessageSendSelectVo {
+
+ private List userIdList = new ArrayList<>();
+
+ private SysMessage sysMessage;
+
+ public List getUserIdList() {
+ return userIdList;
+ }
+
+ public void setUserIdList(List userIdList) {
+ this.userIdList = userIdList;
+ }
+
+ public SysMessage getSysMessage() {
+ return sysMessage;
+ }
+
+ public void setSysMessage(SysMessage sysMessage) {
+ this.sysMessage = sysMessage;
+ }
+}
diff --git a/mallplus-admin/src/main/resources/application-dev.properties b/mallplus-admin/src/main/resources/application-dev.properties
index 233c9dc..7f32296 100644
--- a/mallplus-admin/src/main/resources/application-dev.properties
+++ b/mallplus-admin/src/main/resources/application-dev.properties
@@ -6,7 +6,7 @@ spring.redis.host=127.0.0.1
# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3
spring.redis.port=6379
# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09
-spring.redis.password=123456
+spring.redis.password=
# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
spring.redis.pool.max-active=8
# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
diff --git a/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessage.java b/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessage.java
index 6ce24d4..cdd8cdf 100644
--- a/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessage.java
+++ b/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessage.java
@@ -49,7 +49,7 @@ public class SysMessage implements Serializable {
/**
* 创建时间
*/
- private Long ctime;
+ private Long ctime = System.currentTimeMillis();
/**
* 查看时间
@@ -62,7 +62,7 @@ public class SysMessage implements Serializable {
private Boolean status = false;
public String getCdate() {
- cdate = "";
+ String cdate = "";
if (ctime != null && ctime > 0) {
cdate = DateUtil.format(new Date(ctime), "yyyy-MM-dd");
}
@@ -70,17 +70,17 @@ public class SysMessage implements Serializable {
}
public String getUdate() {
- udate = "";
+ String udate = "";
if (utime != null && utime > 0) {
udate = DateUtil.format(new Date(utime), "yyyy-MM-dd");
}
return udate;
}
- @TableField(exist = false)
- private String cdate;
- @TableField(exist = false)
- private String udate;
+// @TableField(exist = false)
+// private String cdate;
+// @TableField(exist = false)
+// private String udate;
public Integer getId() {
diff --git a/mallplusui-web-admin/config/dev.env.js b/mallplusui-web-admin/config/dev.env.js
index 522063d..1d2045d 100644
--- a/mallplusui-web-admin/config/dev.env.js
+++ b/mallplusui-web-admin/config/dev.env.js
@@ -4,6 +4,6 @@ const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
- BASE_API: '"http://mall.yyundong.com/adminapi"',
- // BASE_API: '"http://127.0.0.1:8085"'
+ // BASE_API: '"http://mall.yyundong.com/adminapi"',
+ BASE_API: '"http://127.0.0.1:8085"'
})
diff --git a/mallplusui-web-admin/src/api/ums/sysMessage.js b/mallplusui-web-admin/src/api/ums/sysMessage.js
index 26d9f31..34c8459 100644
--- a/mallplusui-web-admin/src/api/ums/sysMessage.js
+++ b/mallplusui-web-admin/src/api/ums/sysMessage.js
@@ -1,80 +1,22 @@
import request from '@/utils/request'
-export function fetchList(params) {
- return request({
- url:'/ums/UmsMember/list',
- method:'get',
- params:params
- })
-}
-export function createMember(data) {
- return request({
- url:'/ums/UmsMember/create',
- method:'post',
- data:data
- })
-}
-export function updateShowStatus(data) {
- return request({
- url:'/ums/UmsMember/update/showStatus',
- method:'post',
- data:data
- })
-}
-
-export function updateFactoryStatus(data) {
- return request({
- url:'/ums/UmsMember/update/factoryStatus',
- method:'post',
- data:data
- })
-}
-
-export function deleteMember(id) {
- return request({
- url:'/ums/UmsMember/delete/'+id,
- method:'get',
- })
-}
-
-export function getMember(id) {
- return request({
- url:'/ums/UmsMember/'+id,
- method:'get',
- })
-}
-export function updateMember(data) {
+export function sendToOne(data) {
return request({
- url:'/ums/UmsMember/update',
+ url:'/ums/sysMessage/sendToOne',
method:'post',
data:data
})
}
-export function updateMemberOrderInfo() {
+export function sendToAll(data) {
return request({
- url:'/ums/UmsMember/updateMemberOrderInfo',
- method:'post'
- })
-}
-
-export function fetchBlanceList(id) {
- return request({
- url:'/ums/UmsMember/fetchBlanceList/'+id,
- method:'get',
- })
-}
-
-export function handleEditBlance(data) {
- return request({
- url:'/ums/UmsMember/handleEditBlance',
+ url:'/ums/sysMessage/sendToAll',
method:'post',
data:data
})
}
-
-export function handleEditIntegration(data) {
+export function sendToSelect(data) {
return request({
- url:'/ums/UmsMember/handleEditIntegration',
+ url:'/ums/sysMessage/sendToSelect',
method:'post',
data:data
})
diff --git a/mallplusui-web-admin/src/styles/index.scss b/mallplusui-web-admin/src/styles/index.scss
index 9e43a5e..0faa5b0 100644
--- a/mallplusui-web-admin/src/styles/index.scss
+++ b/mallplusui-web-admin/src/styles/index.scss
@@ -136,6 +136,7 @@ a:hover {
.operate-container .btn-add {
float: right;
+ margin-left: 20px;
}
//表格栏样式
diff --git a/mallplusui-web-admin/src/views/ums/member/index.vue b/mallplusui-web-admin/src/views/ums/member/index.vue
index b82bf2b..580a43e 100644
--- a/mallplusui-web-admin/src/views/ums/member/index.vue
+++ b/mallplusui-web-admin/src/views/ums/member/index.vue
@@ -16,18 +16,20 @@
数据列表
-
+ 向选择会员发送信息
+
@@ -91,7 +93,7 @@
- 发送信息
+ 发送信息
余额充值
删除
@@ -203,17 +205,55 @@
-
-
+
+ 向账号为 {{msgOne.membername}} 的会员发送信息
+
-
+
-
+
+
- 取 消
- 确 定
+ 取 消
+ 确 定
+
+
+
+
+
+
+ 向所选择的会员发送信息!
+
+
+
+
+
+
+
+
+
+ 取 消
+ 确 定
+
+
+
+
+
+
+ 向所有的会员发送信息!
+
+
+
+
+
+
+
+
+
+ 取 消
+ 确 定
@@ -224,6 +264,7 @@ import { formatDate } from '@/utils/date'
import { fetchList, updateShowStatus, updateFactoryStatus, deleteMember, updateMemberOrderInfo, handleEditIntegration, handleEditBlance } from '@/api/ums/member'
import { fetchList as fetchBlanceList } from '@/api/ums/memberBlanceLog'
import { fetchList as fetchIntegrationList } from '@/api/ums/memberIntegration'
+import { sendToOne, sendToAll, sendToSelect } from '@/api/ums/sysMessage'
export default {
name: 'memberList',
@@ -241,9 +282,23 @@ export default {
userId:null,
code:'',
params:'',
- content:''
+ content:'',
+ membername:''
},
+ msgOneRules: {
+ code: [{required: true, message: '请选择信息类型', trigger: 'blur'}],
+ params: [ {required: true, message: '请输入信息标题', trigger: 'blur'} ],
+ content: [ {required: true, message: '信息内容不能为空', trigger: 'blur'}]
+ },
dialogVisibleMessSelect: false,
+ msgSelect:{
+ userIdList:[],
+ sysMessage:{
+ code:'',
+ params:'',
+ content:''
+ }
+ },
dialogVisibleMessAll: false,
dialogVisible: false,
dialogVisible1: false,
@@ -342,7 +397,138 @@ export default {
},
methods: {
sendMessageToOne(index,row){
-
+ this.msgOne.userId=row.id
+ this.msgOne.code='云链助手'
+ this.msgOne.params=''
+ this.msgOne.content=''
+ this.msgOne.membername=row.username
+ this.dialogVisibleMessOne = true
+ },
+ sendMessageToOneSubmit(index,row){
+ let _this = this
+ this.$refs['msgOneFrom'].validate((valid) => {
+ if (valid) {
+ sendToOne(_this.msgOne).then(response => {
+ this.$message({
+ message: '信息发送成功',
+ type: 'success',
+ duration:1000
+ });
+ _this.sendMessageToOneReset()
+ });
+ } else {
+ _this.$message({
+ message: '请输入正确的数据',
+ type: 'error',
+ duration:1000
+ });
+ return false;
+ }
+ });
+ },
+ sendMessageToOneReset(){
+ this.$refs['msgOneFrom'].resetFields();
+ this.msgOne.userId=null
+ this.msgOne.code='云链助手'
+ this.msgOne.params=''
+ this.msgOne.content=''
+ this.msgOne.membername=''
+ this.dialogVisibleMessOne = false
+ },
+ sendMessageToSelect(){
+ if (this.multipleSelection < 1) {
+ this.$message({
+ message: '请选择至少一条会员信息',
+ type: 'warning',
+ duration: 1000
+ })
+ return
+ }
+ this.msgOne.userId=null
+ this.msgOne.code='云链助手'
+ this.msgOne.params=''
+ this.msgOne.content=''
+ this.msgOne.membername=''
+ this.dialogVisibleMessSelect = true
+ },
+ sendMessageToSelectSubmit(){
+ let _this = this
+ this.$refs['msgSelectFrom'].validate((valid) => {
+ if (valid) {
+ let idList = []
+ for(var i in _this.multipleSelection){
+ idList.push(_this.multipleSelection[i].id)
+ }
+ let param = {
+ userIdList: idList,
+ sysMessage: _this.msgOne
+ }
+ console.log('kkk',param)
+ sendToSelect(param).then(response => {
+ this.$message({
+ message: '信息发送成功',
+ type: 'success',
+ duration:1000
+ });
+ _this.sendMessageToSelectReset()
+ });
+ } else {
+ _this.$message({
+ message: '请输入正确的数据',
+ type: 'error',
+ duration:1000
+ });
+ return false;
+ }
+ });
+ },
+ sendMessageToSelectReset(){
+ this.$refs['msgSelectFrom'].resetFields();
+ this.msgOne.userId=null
+ this.msgOne.code='云链助手'
+ this.msgOne.params=''
+ this.msgOne.content=''
+ this.msgOne.membername=''
+ this.dialogVisibleMessSelect = false
+ },
+ sendMessageToAll(){
+ this.msgOne.userId=null
+ this.msgOne.code='云链助手'
+ this.msgOne.params=''
+ this.msgOne.content=''
+ this.msgOne.membername=''
+ this.dialogVisibleMessAll = true
+ },
+ sendMessageToAllSubmit(){
+ let _this = this
+ this.$refs['msgAllFrom'].validate((valid) => {
+ if (valid) {
+ sendToAll(_this.msgOne).then(response => {
+ this.$message({
+ message: '信息发送成功',
+ type: 'success',
+ duration:1000
+ });
+ _this.sendMessageToAllReset()
+ });
+ } else {
+ _this.$message({
+ message: '请输入正确的数据',
+ type: 'error',
+ duration:1000
+ });
+ return false;
+ }
+ });
+ },
+ sendMessageToAllReset(){
+ this.$refs['msgAllFrom'].resetFields();
+ this.msgOne.userId=null
+ this.msgOne.code='云链助手'
+ this.msgOne.params=''
+ this.msgOne.content=''
+ this.msgOne.membername=''
+ this.dialogVisibleMessAll = false
},
addBlacne(index, row) {
this.blance.dialogVisible = true
diff --git a/mallplusui-web-admin/static/tx.png b/mallplusui-web-admin/static/tx.png
new file mode 100644
index 0000000..9d6d6f5
Binary files /dev/null and b/mallplusui-web-admin/static/tx.png differ
diff --git a/mallplusui-web-admin/static/wl.png b/mallplusui-web-admin/static/wl.png
new file mode 100644
index 0000000..f8b523b
Binary files /dev/null and b/mallplusui-web-admin/static/wl.png differ